#include <bits/stdc++.h>
using namespace std;

int main() {
  string t, u; // t是包含问号的字符串，u是要匹配的目标子串
  int pos[4];  // 存储t中问号的位置
  cin >> t >> u;
  int t_len = t.size(); // t的长度
  int u_len = u.size(); // u的长度

  // 记录t中所有问号的位置
  int nw = 0;
  for (int i = 0; i < (int)t.size(); i++)
    if (t[i] == '?')
      pos[nw++] = i;

  // 四重循环枚举所有可能的字母组合来替换问号
  for (char a = 'a'; a <= 'z'; a++)
    for (char b = 'a'; b <= 'z'; b++)
      for (char c = 'a'; c <= 'z'; c++)
        for (char d = 'a'; d <= 'z'; d++) {
          // 用当前字母组合替换问号
          t[pos[0]] = a, t[pos[1]] = b, t[pos[2]] = c, t[pos[3]] = d;

          // 检查替换后的字符串是否包含u作为子串
          for (int i = 0; i + u_len - 1 < t_len; i++) {
            if (t.substr(i, u_len) == u) {
              cout << "Yes\n";
              return 0;
            }
          }
        }

  // 如果所有可能的字母组合都无法匹配u，则输出No
  cout << "No\n";
  return 0;
}
